#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
#include <QIntValidator>
#include <QTimer>
#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    connect(ui->pushButton,&QPushButton::clicked,this,[=](){
        int num = ui->widget->getNum();
        QMessageBox::information(this,"信息",QString::number(num));
    });
    // 设置仅能输入整数
    // 方法1：
    QIntValidator * pIntVld = new QIntValidator(1,100,this);
    ui->lineEdit->setValidator(pIntVld);
    // 方法2: 正则 后面再说

    connect(ui->pushButton_2,&QPushButton::clicked,this,[=](){
       int num = ui->lineEdit->text().toInt();
       ui->widget->setNum(num);
       QMessageBox::warning(this,"信息","设置成功"+QString::number(num));
    });

    // 事件过滤器
    // 安装过滤器
    ui->label->installEventFilter(this);
    // 重写eventfilter事件



    // 启动定时器
    id1 = startTimer(1000);
    id2 = startTimer(2000);

    // 启动定时器 第二种方式
    QTimer * timer = new QTimer(this);
    // 启动定时器
    timer->start(500); // 每0.5会触发一个信号
    connect(timer,&QTimer::timeout,this,[=](){
        static int num = -100;
        ui ->label_4->setText(QString::number(num++));
    });

    connect(ui->pushButton_3,&QPushButton::clicked,this,[=](){
       timer->stop(); // 暂停
    });
}

Widget::~Widget()
{
    delete ui;
}

void Widget::timerEvent(QTimerEvent *ev)
{
    static int num = 1;
    static int num2 = 1;
    if(ev->timerId() == id1)
        ui ->label_2->setText(QString::number(num++));
    else if(ev->timerId() == id2){
        ui ->label_3->setText(QString::number(num2));
        num2 += 10;
    }


}

bool Widget::eventFilter(QObject * obj, QEvent * e)
{
    if(obj == ui->label){
        if(e->type() == QEvent::MouseButtonPress){
            qDebug() << "这是事件过滤器";
            return true;
        }
    }
    // 未过滤的默认处理
    return QWidget::eventFilter(obj,e);
}

